Litecoin payments

This pull request has transferred over the e2e.testnet tests to e2e.mainnet, change testnet server to undefined (falling back to mainnet), and has tested e2e sweep and e2e send successfully

I'm seeing many HdLitecoinPayments test failures. It appears the fixtures/accounts.ts may be incorrect.
FAIL test/HdLitecoinPayments.test.ts (10.616s)
  HdLitecoinPayments
    static
      ✓ should throw on invalid hdKey (39ms)
    buildPaymentTx
      ✓ sweep from single confirmed utxo (21ms)
      ✓ sweep from multiple confirmed and unconfirmed utxo (8ms)
      ✓ send using single ideal utxo (4ms)
      ✓ send using multiple utxos with single small change output (6ms)
      ✓ send using multiple utxos with multiple change outputs (5ms)
      ✓ change below dust threshold gets added to fee (5ms)
    p2pkh
      hardcoded xpub
        ✓ getFullConfig (2ms)
        ✓ getPublicConfig (2ms)
        ✓ getAccountIds (1ms)
        ✓ getAccountId for index 0 (2ms)
        ✓ getAccountId for index 10 (1ms)
        ✓ getXpub (2ms)
        ✕ getPayport for index 0 (10ms)
        ✕ getPayport for index 1 (3ms)
        ✕ getPayport for index 2 (2ms)
        ✕ getPayport for index 5 (4ms)
        ✕ getPayport for index 6 (3ms)
        ✕ getPayport for index 10 (2ms)
        ✕ getPayport for index 10000 (3ms)
        ✕ getPayport for index 20000 (2ms)
        ✕ resolvePayport resolves for index 1 (3ms)
        ✓ resolvePayport resolves for address (1ms)
        ✓ resolvePayport resolves for external address (2ms)
        ✓ resolvePayport resolves for payport (2ms)
        ✓ resolvePayport throws for invalid address (33ms)
        ✕ resolveFromTo is correct for (index, index) (6ms)
        ✕ resolveFromTo is correct for external address (6ms)
        ✕ resolveFromTo is correct for internal address (8ms)
        ✓ resolveFromTo throws for address as from (14ms)
        ✓ get a balance using an index (765ms)
        ✓ get a balance using an address (661ms)
      hardcoded xprv
        ✓ getFullConfig (1ms)
        ✕ getPublicConfig (1ms)
        ✕ getAccountIds (1ms)
        ✕ getAccountId for index 0 (14ms)
        ✕ getAccountId for index 10 (6ms)
        ✕ getXpub (7ms)
        ✓ getPayport for index 0 (2ms)
        ✓ getPayport for index 1 (1ms)
        ✓ getPayport for index 2 (2ms)
        ✕ getPayport for index 5 (1ms)
        ✓ getPayport for index 6 (1ms)
        ✓ getPayport for index 10 (2ms)
        ✓ getPayport for index 10000 (1ms)
        ✓ getPayport for index 20000 (1ms)
        ✓ resolvePayport resolves for index 1 (2ms)
        ✓ resolvePayport resolves for address (9ms)
        ✓ resolvePayport resolves for external address (1ms)
        ✓ resolvePayport resolves for payport
        ✓ resolvePayport throws for invalid address (1ms)
        ✓ resolveFromTo is correct for (index, index) (2ms)
        ✓ resolveFromTo is correct for external address (1ms)
        ✓ resolveFromTo is correct for internal address (2ms)
        ✓ resolveFromTo throws for address as from (1ms)
        ✓ get a balance using an index (591ms)
        ✓ get a balance using an address (571ms)
    p2sh-p2wpkh
      hardcoded xpub
        ✓ getFullConfig
        ✓ getPublicConfig (1ms)
        ✓ getAccountIds (1ms)
        ✓ getAccountId for index 0 (1ms)
        ✓ getAccountId for index 10
        ✓ getXpub (1ms)
        ✕ getPayport for index 0 (2ms)
        ✕ getPayport for index 1 (3ms)
        ✕ getPayport for index 2 (2ms)
        ✕ getPayport for index 5 (2ms)
        ✕ getPayport for index 6 (2ms)
        ✕ getPayport for index 10 (2ms)
        ✕ getPayport for index 10000 (2ms)
        ✕ getPayport for index 20000 (1ms)
        ✕ resolvePayport resolves for index 1 (3ms)
        ✓ resolvePayport resolves for address (1ms)
        ✓ resolvePayport resolves for external address
        ✓ resolvePayport resolves for payport (1ms)
        ✓ resolvePayport throws for invalid address
        ✕ resolveFromTo is correct for (index, index) (3ms)
        ✕ resolveFromTo is correct for external address (7ms)
        ✕ resolveFromTo is correct for internal address (2ms)
        ✓ resolveFromTo throws for address as from (2ms)
        ✓ get a balance using an index (592ms)
        ✓ get a balance using an address (609ms)
      hardcoded xprv
        ✓ getFullConfig (2ms)
        ✓ getPublicConfig (1ms)
        ✓ getAccountIds
        ✓ getAccountId for index 0 (1ms)
        ✓ getAccountId for index 10 (1ms)
        ✓ getXpub (1ms)
        ✕ getPayport for index 0 (2ms)
        ✕ getPayport for index 1 (2ms)
        ✕ getPayport for index 2 (2ms)
        ✕ getPayport for index 5 (3ms)
        ✕ getPayport for index 6 (1ms)
        ✕ getPayport for index 10 (1ms)
        ✕ getPayport for index 10000 (1ms)
        ✕ getPayport for index 20000 (2ms)
        ✕ resolvePayport resolves for index 1 (1ms)
        ✓ resolvePayport resolves for address (1ms)
        ✓ resolvePayport resolves for external address (1ms)
        ✓ resolvePayport resolves for payport (1ms)
        ✓ resolvePayport throws for invalid address (1ms)
        ✕ resolveFromTo is correct for (index, index) (3ms)
        ✕ resolveFromTo is correct for external address (2ms)
        ✕ resolveFromTo is correct for internal address (3ms)
        ✓ resolveFromTo throws for address as from (1ms)
        ✓ get a balance using an index (593ms)
        ✓ get a balance using an address (655ms)
    p2wpkh
      hardcoded xpub
        ✓ getFullConfig (1ms)
        ✓ getPublicConfig (2ms)
        ✓ getAccountIds (1ms)
        ✓ getAccountId for index 0 (1ms)
        ✓ getAccountId for index 10 (1ms)
        ✓ getXpub (1ms)
        ✕ getPayport for index 0 (2ms)
        ✕ getPayport for index 1 (2ms)
        ✕ getPayport for index 2 (2ms)
        ✕ getPayport for index 5 (2ms)
        ✕ getPayport for index 6 (1ms)
        ✕ getPayport for index 10 (1ms)
        ✕ getPayport for index 10000 (1ms)
        ✕ getPayport for index 20000 (1ms)
        ✕ resolvePayport resolves for index 1 (1ms)
        ✓ resolvePayport resolves for address (1ms)
        ✓ resolvePayport resolves for external address (1ms)
        ✓ resolvePayport resolves for payport (1ms)
        ✓ resolvePayport throws for invalid address (1ms)
        ✕ resolveFromTo is correct for (index, index) (4ms)
        ✕ resolveFromTo is correct for external address (2ms)
        ✕ resolveFromTo is correct for internal address (3ms)
        ✓ resolveFromTo throws for address as from (2ms)
        ✓ get a balance using an index (571ms)
        ✕ get a balance using an address (552ms)
      hardcoded xprv
        ✓ getFullConfig
        ✓ getPublicConfig (1ms)
        ✓ getAccountIds (1ms)
        ✓ getAccountId for index 0
        ✓ getAccountId for index 10 (1ms)
        ✓ getXpub
        ✕ getPayport for index 0 (1ms)
        ✕ getPayport for index 1 (1ms)
        ✕ getPayport for index 2 (1ms)
        ✕ getPayport for index 5 (1ms)
        ✕ getPayport for index 6 (1ms)
        ✕ getPayport for index 10 (1ms)
        ✕ getPayport for index 10000 (1ms)
        ✕ getPayport for index 20000 (1ms)
        ✕ resolvePayport resolves for index 1 (1ms)
        ✓ resolvePayport resolves for address
        ✓ resolvePayport resolves for external address (1ms)
        ✓ resolvePayport resolves for payport
        ✓ resolvePayport throws for invalid address (1ms)
        ✕ resolveFromTo is correct for (index, index) (2ms)
        ✕ resolveFromTo is correct for external address (1ms)
        ✕ resolveFromTo is correct for internal address (3ms)
        ✓ resolveFromTo throws for address as from (1ms)
        ✓ get a balance using an index (250ms)
        ✕ get a balance using an address (576ms)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 0

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "Ld1eoAGyDHSr5qp7vPhVYY52M3aGxJQY6N",
    +   "address": "Lb2JxhU6gEXZWuKSzDa8KmrbJuCq5Zp3WM",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LLVr1ccv9HSvHuWoZ37cFnZPijKS6s6kwe",
    +   "address": "LUjhUGhKveZZiSmebaLT3YPZQxiCPWu6Xp",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 2

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LPHRhQyZ4pfUzbT4L7NmAHU51B66QfsPQm",
    +   "address": "La1ZxBdXYpR9HSKxKxYG6Au1D29XUBWAy8",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 5

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LMgUa9dFEVDkxhuZVqUeA61qJhsi9r8b1d	",
    +   "address": "LYo7yxSz3fYRntwSigRXfnvxSgJkMXfnrk",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 6

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LWrc4hWqZuQrgAWBRf7QEyx2iSQBV9vRvn",
    +   "address": "LeBPwcea5y4PSD9eb4mgXQaxG9XfZgqgCb",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 10

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LKTpBfsFfph85Ri1Va7MoP3SBHT8n6KXEW",
    +   "address": "LLzL2PijmXYgb3yUGyG43GpXAdjrrrrrg2",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 10000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LLudzbXqs5qYvAA4W53Cv9AbSJG1J5NCsJ",
    +   "address": "LVE6iYZZFh6eYWMSP5avSDHa7XrcsKRyXh",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › getPayport for index 20000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LQi4pdfoL72Cc8RnMuvyGREkH1f4YBwZ6Y",
    +   "address": "La4FgPwSgLt24gBrXESWJTi2mjZoDDce2e",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › resolvePayport resolves for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LLVr1ccv9HSvHuWoZ37cFnZPijKS6s6kwe",
    +   "address": "LUjhUGhKveZZiSmebaLT3YPZQxiCPWu6Xp",
      }

      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {
    > 237 |     expect(await payments.resolvePayport(1)).toEqual({ address: addresses[1] })
          |                                              ^
      238 |   })
      239 |   it('resolvePayport resolves for address', async () => {
      240 |     expect(await payments.resolvePayport(addresses[1])).toEqual({ address: addresses[1] })

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:237:46)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › resolveFromTo is correct for (index, index)

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "fromAddress": "Ld1eoAGyDHSr5qp7vPhVYY52M3aGxJQY6N",
    +   "fromAddress": "Lb2JxhU6gEXZWuKSzDa8KmrbJuCq5Zp3WM",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "Ld1eoAGyDHSr5qp7vPhVYY52M3aGxJQY6N",
    +     "address": "Lb2JxhU6gEXZWuKSzDa8KmrbJuCq5Zp3WM",
        },
    -   "toAddress": "LPHRhQyZ4pfUzbT4L7NmAHU51B66QfsPQm",
    +   "toAddress": "La1ZxBdXYpR9HSKxKxYG6Au1D29XUBWAy8",
        "toExtraId": undefined,
        "toIndex": 2,
        "toPayport": Object {
    -     "address": "LPHRhQyZ4pfUzbT4L7NmAHU51B66QfsPQm",
    +     "address": "La1ZxBdXYpR9HSKxKxYG6Au1D29XUBWAy8",
        },
      }

      251 |   })
      252 |   it('resolveFromTo is correct for (index, index)', async () => {
    > 253 |     expect(await payments.resolveFromTo(0, 2)).toEqual({
          |                                                ^
      254 |       fromAddress: addresses[0],
      255 |       fromIndex: 0,
      256 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:253:48)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › resolveFromTo is correct for external address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "Ld1eoAGyDHSr5qp7vPhVYY52M3aGxJQY6N",
    +   "fromAddress": "Lb2JxhU6gEXZWuKSzDa8KmrbJuCq5Zp3WM",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "Ld1eoAGyDHSr5qp7vPhVYY52M3aGxJQY6N",
    +     "address": "Lb2JxhU6gEXZWuKSzDa8KmrbJuCq5Zp3WM",
        },
        "toAddress": "MCTwS16sNbKENcr7qs5drkZTtSfaJLw8tB",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      263 |   })
      264 |   it('resolveFromTo is correct for external address', async () => {
    > 265 |     expect(await payments.resolveFromTo(0, EXTERNAL_ADDRESS)).toEqual({
          |                                                               ^
      266 |       fromAddress: addresses[0],
      267 |       fromIndex: 0,
      268 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:265:63)

  ● HdLitecoinPayments › p2pkh › hardcoded xpub › resolveFromTo is correct for internal address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "Ld1eoAGyDHSr5qp7vPhVYY52M3aGxJQY6N",
    +   "fromAddress": "Lb2JxhU6gEXZWuKSzDa8KmrbJuCq5Zp3WM",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "Ld1eoAGyDHSr5qp7vPhVYY52M3aGxJQY6N",
    +     "address": "Lb2JxhU6gEXZWuKSzDa8KmrbJuCq5Zp3WM",
        },
        "toAddress": "LPHRhQyZ4pfUzbT4L7NmAHU51B66QfsPQm",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      275 |   })
      276 |   it('resolveFromTo is correct for internal address', async () => {
    > 277 |     expect(await payments.resolveFromTo(0, addresses[2])).toEqual({
          |                                                           ^
      278 |       fromAddress: addresses[0],
      279 |       fromIndex: 0,
      280 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:277:59)

  ● HdLitecoinPayments › p2pkh › hardcoded xprv › getPublicConfig

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
        "addressType": "p2pkh",
        "derivationPath": "m/44'/2'/0'",
    -   "hdKey": "xpub6BvtsVTfEJWNuwLGduLMBYK9oBBpYmteSoayxvXMMjNMqWsbhX4xNJeTL83BLoLNZoqAdJhr86JHqEJA16ZSBfQG9cEkx3d1MyHrZSSV8X3",
    +   "hdKey": "xpub6Bvk7TZL7RXk6vMPS3aTszwr57mYGEnWwS1gnoNiE3R7CxvRV6Nq9NChJwoztJG3rwNfyi1G368cfbgjpHyTYQWHqJSMZH4Nb7x7b92oeUF",
        "network": "mainnet",
      }

      208 |   })
      209 |   it('getPublicConfig', () => {
    > 210 |     expect(payments.getPublicConfig()).toEqual({
          |                                        ^
      211 |       hdKey: xpub,
      212 |       network: config.network,
      213 |       derivationPath,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:210:40)

  ● HdLitecoinPayments › p2pkh › hardcoded xprv › getAccountIds

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Array [
    -   "xpub6BvtsVTfEJWNuwLGduLMBYK9oBBpYmteSoayxvXMMjNMqWsbhX4xNJeTL83BLoLNZoqAdJhr86JHqEJA16ZSBfQG9cEkx3d1MyHrZSSV8X3",
    +   "xpub6Bvk7TZL7RXk6vMPS3aTszwr57mYGEnWwS1gnoNiE3R7CxvRV6Nq9NChJwoztJG3rwNfyi1G368cfbgjpHyTYQWHqJSMZH4Nb7x7b92oeUF",
      ]

      216 |   })
      217 |   it('getAccountIds', () => {
    > 218 |     expect(payments.getAccountIds()).toEqual([xpub])
          |                                      ^
      219 |   })
      220 |   it('getAccountId for index 0', () => {
      221 |     expect(payments.getAccountId(0)).toEqual(xpub)

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:218:38)

  ● HdLitecoinPayments › p2pkh › hardcoded xprv › getAccountId for index 0

    expect(received).toEqual(expected) // deep equality

    Expected: "xpub6BvtsVTfEJWNuwLGduLMBYK9oBBpYmteSoayxvXMMjNMqWsbhX4xNJeTL83BLoLNZoqAdJhr86JHqEJA16ZSBfQG9cEkx3d1MyHrZSSV8X3"
    Received: "xpub6Bvk7TZL7RXk6vMPS3aTszwr57mYGEnWwS1gnoNiE3R7CxvRV6Nq9NChJwoztJG3rwNfyi1G368cfbgjpHyTYQWHqJSMZH4Nb7x7b92oeUF"

      219 |   })
      220 |   it('getAccountId for index 0', () => {
    > 221 |     expect(payments.getAccountId(0)).toEqual(xpub)
          |                                      ^
      222 |   })
      223 |   it('getAccountId for index 10', () => {
      224 |     expect(payments.getAccountId(10)).toEqual(xpub)

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:221:38)

  ● HdLitecoinPayments › p2pkh › hardcoded xprv › getAccountId for index 10

    expect(received).toEqual(expected) // deep equality

    Expected: "xpub6BvtsVTfEJWNuwLGduLMBYK9oBBpYmteSoayxvXMMjNMqWsbhX4xNJeTL83BLoLNZoqAdJhr86JHqEJA16ZSBfQG9cEkx3d1MyHrZSSV8X3"
    Received: "xpub6Bvk7TZL7RXk6vMPS3aTszwr57mYGEnWwS1gnoNiE3R7CxvRV6Nq9NChJwoztJG3rwNfyi1G368cfbgjpHyTYQWHqJSMZH4Nb7x7b92oeUF"

      222 |   })
      223 |   it('getAccountId for index 10', () => {
    > 224 |     expect(payments.getAccountId(10)).toEqual(xpub)
          |                                       ^
      225 |   })
      226 |   it('getXpub', async () => {
      227 |     expect(payments.xpub).toEqual(xpub)

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:224:39)

  ● HdLitecoinPayments › p2pkh › hardcoded xprv › getXpub

    expect(received).toEqual(expected) // deep equality

    Expected: "xpub6BvtsVTfEJWNuwLGduLMBYK9oBBpYmteSoayxvXMMjNMqWsbhX4xNJeTL83BLoLNZoqAdJhr86JHqEJA16ZSBfQG9cEkx3d1MyHrZSSV8X3"
    Received: "xpub6Bvk7TZL7RXk6vMPS3aTszwr57mYGEnWwS1gnoNiE3R7CxvRV6Nq9NChJwoztJG3rwNfyi1G368cfbgjpHyTYQWHqJSMZH4Nb7x7b92oeUF"

      225 |   })
      226 |   it('getXpub', async () => {
    > 227 |     expect(payments.xpub).toEqual(xpub)
          |                           ^
      228 |   })
      229 |   for (let iString of Object.keys(accountFixture.addresses)) {
      230 |     const i = Number.parseInt(iString)

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:227:27)

  ● HdLitecoinPayments › p2pkh › hardcoded xprv › getPayport for index 5

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "LMgUa9dFEVDkxhuZVqUeA61qJhsi9r8b1d	",
    +   "address": "LMgUa9dFEVDkxhuZVqUeA61qJhsi9r8b1d",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 0

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MSWhMKMZrh3bAjCtSu3ic2nvzyE7CBQu8a",
    +   "address": "MAW7KQXPthRZ52Ph2kbgzuDCLgeF82E4X4",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 2

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
    +   "address": "MDqjJmf5zqMcmf9wrgiQEXPrx1M6WqTCWH",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 5

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MHdTWgK4ue4oXv8CtqyqBttdEoSNgonn88",
    +   "address": "MW7wNjZvLrEqVGgmHrkwUad8skHpoUEYKD",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 6

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MEpNheNmeRYBEx4Uz9CRaAquU9TQvy8peR",
    +   "address": "MKkRm1HcpebFwSaGzVw67pqhKPHUkw3XxZ",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 10

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MAXezntDQYiBJPkdpWB6J9HLshnmJTvJ61",
    +   "address": "MBSKXC2mRXMi3Dg8knyPdufHeTqDNMTNYm",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 10000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MP95FunXmkKtpNF9KR6pmHLUBUzkwh8xhw",
    +   "address": "MT2WjBDLf2fwfCxEYjuHmXvzhQ1w3eo6mT",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › getPayport for index 20000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MKg3ksyJvGMnUgVCKudUwd631iPRuCB5Vh",
    +   "address": "MA5wacex6QnYVKfB6w3qQMq4chWerFsVQw",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › resolvePayport resolves for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MSWhMKMZrh3bAjCtSu3ic2nvzyE7CBQu8a",
    +   "address": "MAW7KQXPthRZ52Ph2kbgzuDCLgeF82E4X4",
      }

      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {
    > 237 |     expect(await payments.resolvePayport(1)).toEqual({ address: addresses[1] })
          |                                              ^
      238 |   })
      239 |   it('resolvePayport resolves for address', async () => {
      240 |     expect(await payments.resolvePayport(addresses[1])).toEqual({ address: addresses[1] })

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:237:46)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › resolveFromTo is correct for (index, index)

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "fromAddress": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "fromAddress": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +     "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        },
    -   "toAddress": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
    +   "toAddress": "MDqjJmf5zqMcmf9wrgiQEXPrx1M6WqTCWH",
        "toExtraId": undefined,
        "toIndex": 2,
        "toPayport": Object {
    -     "address": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
    +     "address": "MDqjJmf5zqMcmf9wrgiQEXPrx1M6WqTCWH",
        },
      }

      251 |   })
      252 |   it('resolveFromTo is correct for (index, index)', async () => {
    > 253 |     expect(await payments.resolveFromTo(0, 2)).toEqual({
          |                                                ^
      254 |       fromAddress: addresses[0],
      255 |       fromIndex: 0,
      256 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:253:48)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › resolveFromTo is correct for external address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "fromAddress": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +     "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        },
        "toAddress": "MCTwS16sNbKENcr7qs5drkZTtSfaJLw8tB",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      263 |   })
      264 |   it('resolveFromTo is correct for external address', async () => {
    > 265 |     expect(await payments.resolveFromTo(0, EXTERNAL_ADDRESS)).toEqual({
          |                                                               ^
      266 |       fromAddress: addresses[0],
      267 |       fromIndex: 0,
      268 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:265:63)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xpub › resolveFromTo is correct for internal address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "fromAddress": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +     "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        },
        "toAddress": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      275 |   })
      276 |   it('resolveFromTo is correct for internal address', async () => {
    > 277 |     expect(await payments.resolveFromTo(0, addresses[2])).toEqual({
          |                                                           ^
      278 |       fromAddress: addresses[0],
      279 |       fromIndex: 0,
      280 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:277:59)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 0

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MSWhMKMZrh3bAjCtSu3ic2nvzyE7CBQu8a",
    +   "address": "MAW7KQXPthRZ52Ph2kbgzuDCLgeF82E4X4",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 2

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
    +   "address": "MDqjJmf5zqMcmf9wrgiQEXPrx1M6WqTCWH",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 5

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MHdTWgK4ue4oXv8CtqyqBttdEoSNgonn88",
    +   "address": "MW7wNjZvLrEqVGgmHrkwUad8skHpoUEYKD",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 6

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MEpNheNmeRYBEx4Uz9CRaAquU9TQvy8peR",
    +   "address": "MKkRm1HcpebFwSaGzVw67pqhKPHUkw3XxZ",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 10

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MAXezntDQYiBJPkdpWB6J9HLshnmJTvJ61",
    +   "address": "MBSKXC2mRXMi3Dg8knyPdufHeTqDNMTNYm",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 10000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MP95FunXmkKtpNF9KR6pmHLUBUzkwh8xhw",
    +   "address": "MT2WjBDLf2fwfCxEYjuHmXvzhQ1w3eo6mT",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › getPayport for index 20000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MKg3ksyJvGMnUgVCKudUwd631iPRuCB5Vh",
    +   "address": "MA5wacex6QnYVKfB6w3qQMq4chWerFsVQw",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › resolvePayport resolves for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "MSWhMKMZrh3bAjCtSu3ic2nvzyE7CBQu8a",
    +   "address": "MAW7KQXPthRZ52Ph2kbgzuDCLgeF82E4X4",
      }

      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {
    > 237 |     expect(await payments.resolvePayport(1)).toEqual({ address: addresses[1] })
          |                                              ^
      238 |   })
      239 |   it('resolvePayport resolves for address', async () => {
      240 |     expect(await payments.resolvePayport(addresses[1])).toEqual({ address: addresses[1] })

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:237:46)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › resolveFromTo is correct for (index, index)

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "fromAddress": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "fromAddress": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +     "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        },
    -   "toAddress": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
    +   "toAddress": "MDqjJmf5zqMcmf9wrgiQEXPrx1M6WqTCWH",
        "toExtraId": undefined,
        "toIndex": 2,
        "toPayport": Object {
    -     "address": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
    +     "address": "MDqjJmf5zqMcmf9wrgiQEXPrx1M6WqTCWH",
        },
      }

      251 |   })
      252 |   it('resolveFromTo is correct for (index, index)', async () => {
    > 253 |     expect(await payments.resolveFromTo(0, 2)).toEqual({
          |                                                ^
      254 |       fromAddress: addresses[0],
      255 |       fromIndex: 0,
      256 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:253:48)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › resolveFromTo is correct for external address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "fromAddress": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +     "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        },
        "toAddress": "MCTwS16sNbKENcr7qs5drkZTtSfaJLw8tB",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      263 |   })
      264 |   it('resolveFromTo is correct for external address', async () => {
    > 265 |     expect(await payments.resolveFromTo(0, EXTERNAL_ADDRESS)).toEqual({
          |                                                               ^
      266 |       fromAddress: addresses[0],
      267 |       fromIndex: 0,
      268 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:265:63)

  ● HdLitecoinPayments › p2sh-p2wpkh › hardcoded xprv › resolveFromTo is correct for internal address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +   "fromAddress": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "MQRmKLBCR6Lx3cAwQLpFQ7TWk9emXqfc8e",
    +     "address": "MFmobJTz7V7nwe58hEw7kucxZ13P7ZSn7c",
        },
        "toAddress": "MSdUteBz8jBva5WK9rhXytoCkstyvWRQDF",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      275 |   })
      276 |   it('resolveFromTo is correct for internal address', async () => {
    > 277 |     expect(await payments.resolveFromTo(0, addresses[2])).toEqual({
          |                                                           ^
      278 |       fromAddress: addresses[0],
      279 |       fromIndex: 0,
      280 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:277:59)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 0

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qphueqqvv7l79v5u3gjfvyyqx50gxhh3hhg3x6h",
    +   "address": "ltc1qucrmc6gwq8pa9zdp7c702u0j9te0hr8a5zwkd9",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 2

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
    +   "address": "ltc1qgp60ny70xpkk42efl8wsepxshxzfwmpefjy6za",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 5

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qrt69uy0ukl4g3wl6t0cut2x50r29l46t37qkdm",
    +   "address": "ltc1q8f957ftf684w77knh0pz2y3ps35waqyyzu8ntz",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 6

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1q07t7n5yu25nm924n7dkn0jvzq7wqpd980fqwrq",
    +   "address": "ltc1qyv5k9fhkwnpm0y7qzkaeq293jzzx5x5n7hmr5v",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 10

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qq203glxhjphqy2vqycnnssrpppu6tjttmulahj",
    +   "address": "ltc1qdr4mf0cutz7xs09mg68030apax7qvy66gdqw3d",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 10000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qzfuc8zuc6ggzh6x5w3ym5ssvjajk3847e6svsc",
    +   "address": "ltc1qtylwn2xevelzlvmdnvufw0gpc5napskwjkgxpd",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › getPayport for index 20000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1q8s5uqstg5az5meszvz45lyzrrs9nsau2jyjgnh",
    +   "address": "ltc1qx3cttwxka3eh0k02jlcduhvqcagphd0ksrrj4h",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › resolvePayport resolves for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qphueqqvv7l79v5u3gjfvyyqx50gxhh3hhg3x6h",
    +   "address": "ltc1qucrmc6gwq8pa9zdp7c702u0j9te0hr8a5zwkd9",
      }

      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {
    > 237 |     expect(await payments.resolvePayport(1)).toEqual({ address: addresses[1] })
          |                                              ^
      238 |   })
      239 |   it('resolvePayport resolves for address', async () => {
      240 |     expect(await payments.resolvePayport(addresses[1])).toEqual({ address: addresses[1] })

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:237:46)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › resolveFromTo is correct for (index, index)

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "fromAddress": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "fromAddress": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +     "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        },
    -   "toAddress": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
    +   "toAddress": "ltc1qgp60ny70xpkk42efl8wsepxshxzfwmpefjy6za",
        "toExtraId": undefined,
        "toIndex": 2,
        "toPayport": Object {
    -     "address": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
    +     "address": "ltc1qgp60ny70xpkk42efl8wsepxshxzfwmpefjy6za",
        },
      }

      251 |   })
      252 |   it('resolveFromTo is correct for (index, index)', async () => {
    > 253 |     expect(await payments.resolveFromTo(0, 2)).toEqual({
          |                                                ^
      254 |       fromAddress: addresses[0],
      255 |       fromIndex: 0,
      256 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:253:48)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › resolveFromTo is correct for external address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "fromAddress": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +     "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        },
        "toAddress": "MCTwS16sNbKENcr7qs5drkZTtSfaJLw8tB",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      263 |   })
      264 |   it('resolveFromTo is correct for external address', async () => {
    > 265 |     expect(await payments.resolveFromTo(0, EXTERNAL_ADDRESS)).toEqual({
          |                                                               ^
      266 |       fromAddress: addresses[0],
      267 |       fromIndex: 0,
      268 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:265:63)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › resolveFromTo is correct for internal address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "fromAddress": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +     "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        },
        "toAddress": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      275 |   })
      276 |   it('resolveFromTo is correct for internal address', async () => {
    > 277 |     expect(await payments.resolveFromTo(0, addresses[2])).toEqual({
          |                                                           ^
      278 |       fromAddress: addresses[0],
      279 |       fromIndex: 0,
      280 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:277:59)

  ● HdLitecoinPayments › p2wpkh › hardcoded xpub › get a balance using an address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "confirmedBalance": "0",
    +   "confirmedBalance": "0.03",
        "requiresActivation": false,
    -   "spendableBalance": "0",
    -   "sweepable": false,
    +   "spendableBalance": "0.03",
    +   "sweepable": true,
        "unconfirmedBalance": "0",
      }

      300 |   })
      301 |   it('get a balance using an address', async () => {
    > 302 |     expect(await payments.getBalance({ address: addresses[0] })).toEqual({
          |                                                                  ^
      303 |       confirmedBalance: '0',
      304 |       unconfirmedBalance: '0',
      305 |       spendableBalance: '0',

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:302:66)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 0

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qphueqqvv7l79v5u3gjfvyyqx50gxhh3hhg3x6h",
    +   "address": "ltc1qucrmc6gwq8pa9zdp7c702u0j9te0hr8a5zwkd9",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 2

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
    +   "address": "ltc1qgp60ny70xpkk42efl8wsepxshxzfwmpefjy6za",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 5

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qrt69uy0ukl4g3wl6t0cut2x50r29l46t37qkdm",
    +   "address": "ltc1q8f957ftf684w77knh0pz2y3ps35waqyyzu8ntz",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 6

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1q07t7n5yu25nm924n7dkn0jvzq7wqpd980fqwrq",
    +   "address": "ltc1qyv5k9fhkwnpm0y7qzkaeq293jzzx5x5n7hmr5v",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 10

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qq203glxhjphqy2vqycnnssrpppu6tjttmulahj",
    +   "address": "ltc1qdr4mf0cutz7xs09mg68030apax7qvy66gdqw3d",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 10000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qzfuc8zuc6ggzh6x5w3ym5ssvjajk3847e6svsc",
    +   "address": "ltc1qtylwn2xevelzlvmdnvufw0gpc5napskwjkgxpd",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › getPayport for index 20000

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1q8s5uqstg5az5meszvz45lyzrrs9nsau2jyjgnh",
    +   "address": "ltc1qx3cttwxka3eh0k02jlcduhvqcagphd0ksrrj4h",
      }

      231 |     it(`getPayport for index ${i}`, async () => {
      232 |       const actual = await payments.getPayport(i)
    > 233 |       expect(actual).toEqual({ address: addresses[i] })
          |                      ^
      234 |     })
      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:233:22)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › resolvePayport resolves for index 1

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "address": "ltc1qphueqqvv7l79v5u3gjfvyyqx50gxhh3hhg3x6h",
    +   "address": "ltc1qucrmc6gwq8pa9zdp7c702u0j9te0hr8a5zwkd9",
      }

      235 |   }
      236 |   it('resolvePayport resolves for index 1', async () => {
    > 237 |     expect(await payments.resolvePayport(1)).toEqual({ address: addresses[1] })
          |                                              ^
      238 |   })
      239 |   it('resolvePayport resolves for address', async () => {
      240 |     expect(await payments.resolvePayport(addresses[1])).toEqual({ address: addresses[1] })

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:237:46)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › resolveFromTo is correct for (index, index)

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "fromAddress": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "fromAddress": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +     "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        },
    -   "toAddress": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
    +   "toAddress": "ltc1qgp60ny70xpkk42efl8wsepxshxzfwmpefjy6za",
        "toExtraId": undefined,
        "toIndex": 2,
        "toPayport": Object {
    -     "address": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
    +     "address": "ltc1qgp60ny70xpkk42efl8wsepxshxzfwmpefjy6za",
        },
      }

      251 |   })
      252 |   it('resolveFromTo is correct for (index, index)', async () => {
    > 253 |     expect(await payments.resolveFromTo(0, 2)).toEqual({
          |                                                ^
      254 |       fromAddress: addresses[0],
      255 |       fromIndex: 0,
      256 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:253:48)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › resolveFromTo is correct for external address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "fromAddress": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +     "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        },
        "toAddress": "MCTwS16sNbKENcr7qs5drkZTtSfaJLw8tB",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      263 |   })
      264 |   it('resolveFromTo is correct for external address', async () => {
    > 265 |     expect(await payments.resolveFromTo(0, EXTERNAL_ADDRESS)).toEqual({
          |                                                               ^
      266 |       fromAddress: addresses[0],
      267 |       fromIndex: 0,
      268 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:265:63)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › resolveFromTo is correct for internal address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

    @@ -1,11 +1,11 @@
      Object {
    -   "fromAddress": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +   "fromAddress": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        "fromExtraId": undefined,
        "fromIndex": 0,
        "fromPayport": Object {
    -     "address": "ltc1qcv0tz0xkwn7kxztk0n5kjzk3ww7jjmfax6xeez",
    +     "address": "ltc1qgux208qk8ja705ezz4tw43qs74tllyqsfd389g",
        },
        "toAddress": "ltc1q9jy2da00sx99t7euhg5f3r3ju875elyafuvkhe",
        "toExtraId": undefined,
        "toIndex": null,
        "toPayport": Object {

      275 |   })
      276 |   it('resolveFromTo is correct for internal address', async () => {
    > 277 |     expect(await payments.resolveFromTo(0, addresses[2])).toEqual({
          |                                                           ^
      278 |       fromAddress: addresses[0],
      279 |       fromIndex: 0,
      280 |       fromExtraId: undefined,

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:277:59)

  ● HdLitecoinPayments › p2wpkh › hardcoded xprv › get a balance using an address

    expect(received).toEqual(expected) // deep equality

    - Expected
    + Received

      Object {
    -   "confirmedBalance": "0",
    +   "confirmedBalance": "0.03",
        "requiresActivation": false,
    -   "spendableBalance": "0",
    -   "sweepable": false,
    +   "spendableBalance": "0.03",
    +   "sweepable": true,
        "unconfirmedBalance": "0",
      }

      300 |   })
      301 |   it('get a balance using an address', async () => {
    > 302 |     expect(await payments.getBalance({ address: addresses[0] })).toEqual({
          |                                                                  ^
      303 |       confirmedBalance: '0',
      304 |       unconfirmedBalance: '0',
      305 |       spendableBalance: '0',

      at Object.<anonymous> (test/HdLitecoinPayments.test.ts:302:66)

  ● e2e mainnet › create sweep transaction to an external address with unconfirmed utxos

    expect(received).toBe(expected) // Object.is equality

    Expected: "0.00002352"
    Received: "0.0000231"

      191 |     const expectedTxSize = 112
      192 |     const expectedFee = new BigNumber(feeRate).times(expectedTxSize).times(1e-8).toString()
    > 193 |     expect(tx.fee).toBe(expectedFee)
          |                    ^
      194 |   })
      195 |
      196 |   it('create send transaction to an index', async () => {

      at Object.<anonymous> (test/e2e.mainnet.test.ts:193:20)

  ● e2e mainnet › create send transaction to an index

    expect(received).toBe(expected) // Object.is equality

    Expected: "0.0000567"
    Received: "0.00005546"

      208 |     const expectedTxSize = 270
      209 |     const expectedFee = new BigNumber(feeRate).times(expectedTxSize).times(1e-8).toString()
    > 210 |     expect(tx.fee).toBe(expectedFee)
          |                    ^
      211 |     const expectedChange = new BigNumber(address0balance).minus(amount).minus(expectedFee).toString()
      212 |     expect(tx.data.changeOutputs).toEqual([{ address: address0, value: expectedChange }])
      213 |   })

      at Object.<anonymous> (test/e2e.mainnet.test.ts:210:20)

  ● e2e mainnet › p2pkh › end to end sweep

    Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ["LYo7yxSz3fYRntwSigRXfnvxSgJkMXfnrk","LeBPwcea5y4PSD9eb4mgXQaxG9XfZgqgCb"]

      321 |         if (indexToSweep < 0) {
      322 |           const allAddresses = await Promise.all(indicesToTry.map(async i => (await payments.getPayport(i)).address))
    > 323 |           throw new Error(`Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ${JSON.stringify(allAddresses)}`)
          |                 ^
      324 |         }
      325 |         const recipientIndex = indexToSweep === indicesToTry[0] ? indicesToTry[1] : indicesToTry[0]
      326 |         const satPerByte = 44

      at Object.<anonymous> (test/e2e.mainnet.test.ts:323:17)

  ● e2e mainnet › p2pkh › end to end send

    Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ["LgAp5DNiqb9FdTKbGZT7UF2m959iYbSQWz","LbLsqrRe9o8edvHiPxgmbDF57CbUuXcPre"]

      362 |         if (indexToSend < 0) {
      363 |           const allAddresses = await Promise.all(indicesToTry.map(async i => (await payments.getPayport(i)).address))
    > 364 |           throw new Error(`Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ${JSON.stringify(allAddresses)}`)
          |                 ^
      365 |         }
      366 |         const recipientIndex = indexToSend === indicesToTry[0] ? indicesToTry[1] : indicesToTry[0]
      367 |         const unsignedTx = await payments.createTransaction(

      at Object.<anonymous> (test/e2e.mainnet.test.ts:364:17)

  ● e2e mainnet › p2sh-p2wpkh › end to end sweep

    Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ["MHrZeWbuYk9FyxNSv1xWPi1HJghQwsQZ3Z","MWqbvRkZH1nV31ToqMHxKaB51rs97qZetK"]

      321 |         if (indexToSweep < 0) {
      322 |           const allAddresses = await Promise.all(indicesToTry.map(async i => (await payments.getPayport(i)).address))
    > 323 |           throw new Error(`Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ${JSON.stringify(allAddresses)}`)
          |                 ^
      324 |         }
      325 |         const recipientIndex = indexToSweep === indicesToTry[0] ? indicesToTry[1] : indicesToTry[0]
      326 |         const satPerByte = 44

      at Object.<anonymous> (test/e2e.mainnet.test.ts:323:17)

  ● e2e mainnet › p2sh-p2wpkh › end to end send

    Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ["MViazG1Uf29ymt2X3fLrvZCziVPinyj7wg","MCMcRqdaXXMpYmea5PRKZH2xZia7FYHV13"]

      362 |         if (indexToSend < 0) {
      363 |           const allAddresses = await Promise.all(indicesToTry.map(async i => (await payments.getPayport(i)).address))
    > 364 |           throw new Error(`Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ${JSON.stringify(allAddresses)}`)
          |                 ^
      365 |         }
      366 |         const recipientIndex = indexToSend === indicesToTry[0] ? indicesToTry[1] : indicesToTry[0]
      367 |         const unsignedTx = await payments.createTransaction(

      at Object.<anonymous> (test/e2e.mainnet.test.ts:364:17)

  ● e2e mainnet › p2wpkh › end to end sweep

    Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ["ltc1q46zmg3v87rr942cad3hlv5ghusz79pdtzpazzh","ltc1qrx0dulccq3w44jr8q4m9492s2jju7vl65wdmaa"]

      321 |         if (indexToSweep < 0) {
      322 |           const allAddresses = await Promise.all(indicesToTry.map(async i => (await payments.getPayport(i)).address))
    > 323 |           throw new Error(`Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ${JSON.stringify(allAddresses)}`)
          |                 ^
      324 |         }
      325 |         const recipientIndex = indexToSweep === indicesToTry[0] ? indicesToTry[1] : indicesToTry[0]
      326 |         const satPerByte = 44

      at Object.<anonymous> (test/e2e.mainnet.test.ts:323:17)

  ● e2e mainnet › p2wpkh › end to end send

    Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ["ltc1qn2788flds3hay5w7a2cj3z9ce2p4du4vn5aedp","ltc1qn862r8z2dkez0m8nl5zaw0t7uvq448p78m7cwr"]

      362 |         if (indexToSend < 0) {
      363 |           const allAddresses = await Promise.all(indicesToTry.map(async i => (await payments.getPayport(i)).address))
    > 364 |           throw new Error(`Cannot end to end test sweeping due to lack of funds. Send LTC to any of the following addresses and try again. ${JSON.stringify(allAddresses)}`)
          |                 ^
      365 |         }
      366 |         const recipientIndex = indexToSend === indicesToTry[0] ? indicesToTry[1] : indicesToTry[0]
      367 |         const unsignedTx = await payments.createTransaction(

      at Object.<anonymous> (test/e2e.mainnet.test.ts:364:17)

I have added funds to all addresses from tests and the funds were sent correctly (i manually checked using an explorer), but also this is the output:
`ts-jest[path-mapper] (WARN) Mapping only to first target of "@faast/payments-common" because it has more than one (2).
ts-jest[path-mapper] (WARN) Mapping only to first target of "@faast/*-payments" because it has more than one (2).
FAIL  test/e2e.mainnet.test.ts (1016.382s)
e2e mainnet
✓ get correct xpub (8ms)
✓ get correct address for index 0 (6ms)
✓ get correct address for index 3 (2ms)
✓ get correct balance for index 0 (574ms)
✓ get correct balance for address 0 (285ms)
✓ get correct balance for address 3 (268ms)
✓ can get balance of unused address (141ms)
✓ get transaction by arbitrary hash (285ms)
✓ fail to get an invalid transaction hash (319ms)
✓ creates transaction with fixed fee (570ms)
✓ create sweep transaction to an index (527ms)
✓ create sweep transaction to an internal address (394ms)
✓ create sweep transaction to an external address (510ms)
✕ create sweep transaction to an external address with unconfirmed utxos (331ms)
✕ create send transaction to an index (549ms)
✓ create send transaction to an internal address (438ms)
✓ can sign transaction (287ms)
✓ can sign transaction without rawHex (572ms)
p2pkh
✓ get correct xpub (1ms)
✓ get correct address for index 0 (3ms)
✓ get correct address for index 5 (2ms)
✓ get correct address for index 6 (2ms)
✓ get correct address for index 7 (2ms)
✓ get correct address for index 8 (2ms)
✓ end to end sweep (114885ms)
✓ end to end send (153479ms)
p2sh-p2wpkh
✓ get correct xpub (3ms)
✓ get correct address for index 0 (5ms)
✓ get correct address for index 5 (3ms)
✓ get correct address for index 6 (4ms)
✓ get correct address for index 7 (3ms)
✓ get correct address for index 8 (2ms)
✕ end to end sweep (300012ms)
✓ end to end send (131372ms)
p2wpkh
✓ get correct xpub (5ms)
✓ get correct address for index 0 (8ms)
✓ get correct address for index 5 (2ms)
✓ get correct address for index 6 (13ms)
✓ get correct address for index 7 (13ms)
✓ get correct address for index 8 (3ms)
✕ end to end sweep (52930ms)
✓ end to end send (252235ms)
● e2e mainnet › create sweep transaction to an external address with unconfirmed utxos
expect(received).toBe(expected) // Object.is equality

Expected: "0.00002352"
Received: "0.0000231"

  191 |     const expectedTxSize = 112
  192 |     const expectedFee = new BigNumber(feeRate).times(expectedTxSize).times(1e-8).toString()
> 193 |     expect(tx.fee).toBe(expectedFee)
      |                    ^
  194 |   })
  195 |
  196 |   it('create send transaction to an index', async () => {

  at Object.<anonymous> (test/e2e.mainnet.test.ts:193:20)

● e2e mainnet › create send transaction to an index
expect(received).toBe(expected) // Object.is equality

Expected: "0.0000567"
Received: "0.00005546"

  208 |     const expectedTxSize = 270
  209 |     const expectedFee = new BigNumber(feeRate).times(expectedTxSize).times(1e-8).toString()
> 210 |     expect(tx.fee).toBe(expectedFee)
      |                    ^
  211 |     const expectedChange = new BigNumber(address0balance).minus(amount).minus(expectedFee).toString()
  212 |     expect(tx.data.changeOutputs).toEqual([{ address: address0, value: expectedChange }])
  213 |   })

  at Object.<anonymous> (test/e2e.mainnet.test.ts:210:20)

● e2e mainnet › p2sh-p2wpkh › end to end sweep
thrown: "Exceeded timeout of 300000ms for a test.
Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."

  307 |       jest.setTimeout(300 * 1000)
  308 |
> 309 |       it('end to end sweep', async () => {
      |       ^
  310 |         const indicesToTry = [5, 6]
  311 |         const balances: { [i: number]: BalanceResult } = {}
  312 |         let indexToSweep: number = -1

  at test/e2e.mainnet.test.ts:309:7
  at test/e2e.mainnet.test.ts:252:5
  at Object.<anonymous> (test/e2e.mainnet.test.ts:48:1)

● e2e mainnet › p2wpkh › end to end sweep
expect(received).toMatch(expected)

Matcher error: received value must be a string

Received has value: null

  299 |         expect(tx.isConfirmed).toBe(true)
  300 |         expect(tx.isExecuted).toBe(true)
> 301 |         expect(tx.confirmationId).toMatch(/^\w+$/)
      |                                   ^
  302 |         expect(tx.confirmationTimestamp).toBeDefined()
  303 |         expect(tx.confirmations).toBeGreaterThan(0)
  304 |         return tx

  at pollUntilEnded (test/e2e.mainnet.test.ts:301:35)
  at Object.<anonymous> (test/e2e.mainnet.test.ts:343:20)`

so basically the fees issue is causing the first 2 failures, and then the tests timed out cause a technical failure but they worked


QoS for Clients and Services

Addresses #391

@samouwow thanks for your PR. However, I'm hesitant to accept this change, neither rclcpp or rclpy accept arbitrary QoS settings for clients and services, among some of the reasons is the issue of interoperability. Publishers and subscribers accept different values for their QoS, but require the other end to have compatible settings (e.g. a publisher's reliability QoS is set as fire and forget, whereas a subscription is created as reliable wouldn't work). Adding this change to the API may break compatilibity with the rest of client libraries.

@esteve thanks for the quick response.
As best I can tell both rclpy and rclcpp have an API to provide a custom QoS when creating clients and servers, this PR would simply bring rclrs in line with those other libraries.
I will concede both of those client libraries have the QoS as default values, would you feel more comfortable if rclrs had one method for creating clients/servers with QoS and one without?
E.g. create_client() and create_client_qos()?

@samouwow my bad, you're right, I thought neither APIs had that option. Adding a secondary API that takes QoS argument would work, or perhaps just keep create_client as a legacy API and have a Client builder instead would feel more idiomatic
@jhdcs @maspe36 thoughts?

I like the idea of a client builder. Rust does like its builder patterns, after all.

I also think we should look into creating a client builder instead of proliferating create_<type>_<extras> functions.

@samouwow thanks for all the work. Would you be interested in adding builders for Clients and Services? That way we could add QoS settings and many other options when either structs are created.

I've opened #427 which introduces an option builder pattern to allow services and clients to override specific fields in the default client/service QoS. It applies the same option builder pattern to subscriptions and publishers, so all the different primitive creation functions are consistent.
I believe that addresses the last round of feedback on this PR.


fix(dependency): update protobuf to version 1.33.0

Closes #
Proposed Changes
-force version to lib protobuf
I submit this contribution under the Apache-2.0 license.

no need


fix: Use pinned version for all the pending tasks

I'm fixing semgrep detections and this is one of them as not using versions pinned by commit sha is vulnerable to tampering
Checklist

[x] Commits are signed with Developer Certificate of Origin (DCO - learn more)

/skip-e2e

I skip the e2e tests because these changes won't apply until they are merged, so doesn't make sense to execute the e2e suite

Is it possible to also fix the token-permission (like #6088)?

Is it possible to also fix the token-permission (like #6088)?

let me update the PR, nice catch!


[Task]: When client supports both quick pick and rename capabilities improve the extract command

Description
There are three scenarios we need to consider when we have quick pick and rename support capabilities.

Client with quick pick capability
Client with renaming capability
Client with renaming and quick pick capability

We need to handle the third case for extract to code actions (extract to function, extract to constant and extract to local variable).
In this case we need send the start position of the selected expression as a command argument to the quick pick command to execute once after the user picks his/her intended expression.
Describe your task(s)
No response
Related area
-> Editor
Related issue(s) (optional)
No response
Suggested label(s) (optional)
No response
Suggested assignee(s) (optional)
No response

Needs #38663 to be merged to start this

Closing this as a low-priority task with the Icebox label might reopen in the future.


[vite:css] [less] Unrecognised input

⚠ IMPORTANT ⚠ Please check the following list before proceeding. If you ignore this issue template, your issue will be directly closed.

[x] Read the docs.
[x] Make sure the code is up to date. (Some bugs have been fixed in the latest code)
[ ] This is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.

Describe the bug
A clear and concise description of what the bug is..
Reproduction
Please describe the steps of the problem in detail to ensure that we can restore the correct problem
System Info

Operating System: win x86
Node version: 18
Package manager (npm/yarn/pnpm) and version: npnm

 ERROR  [vite:css] [less] Unrecognised input                                                                                11:21:24
file: E:/opensource/xxxxx/src/design/index.less:36:22

https://github.com/vbenjs/vue-vben-admin/blob/1c668f21bf7ddfbc60c194e3427ea2674aa1ee16/src/design/index.less#L39

pnpm build report error

CC :

https://github.com/vitejs/vite/issues/14350

Fied

Fixed, this PR has done two things:

We have modified some less file naming conventions under the design module while also modifying the names referenced by vue component files. The purpose of this is that we should not follow the practice of non-standard vben-ui naming. We can make appropriate adjustments to facilitate future extensions of new css and less files that also need to comply with the regulations.
Add CI/CD for Github Action.


Remake status handling

Currently we have a lot of status that get stored that should be simplified.
First we have the run status: that is the final state of the dag run produced in airflow, this is stored on the executions table, status field.
Then we have two different status for the solutions of an execution. These are stored on the log of the execution but should be able to be accessed more easily. These status should mean:

One is the result of the solver: did it finish? did it find an error? did it reached a limit? Statuses could be: optimal solution, feasible solution, time limit, node limit, gap reached, licesing error, memory error, unfasible, unbounded, etc.
The other one is the status of the solution: 0 not found, 1 found.

Is related to #320


Crossbar.io and Autobahn ARM images

To support Docker on the Pi 2, we would need images for the armhf Linux architecture. See here and here.

Note: The Pi 3, being 64-bit, likely will require yet another Linux architecture: arm64

Pi3 is 32bit userland. No need for separate builds / images.
FROM resin/rpi-raspbian:jessie
Is a good start.

Scaleway has cheap ARM servers and docker images

+1 for rPi compatible dockerfiles/packages

@Hades32 32 bit userland .. interesting. wasn't aware. will they change that upcoming?
I didn't have time yet to look more closely into "Docker + Pi" .. what about

http://blog.hypriot.com/
https://hub.docker.com/r/hypriot/
https://github.com/hypriot

Rgd Scaleway .. ideally we'd have something to build images that integrates into our CI .. Travis. Or at least can be started from command line (make image) ..

@oberstet i'm running docker with hypriot on my rPi 2 and rPi 3 and combined with https://github.com/hypriot/docker-machine-hypriot it's dead simple.
Have a look at https://hub.docker.com/r/hypriot/rpi-python/ and https://github.com/hypriot/rpi-alpine-scratch, they should be good starting points.

@joernroeder I'll check that out! Funny: the Hypriot guys have been doing a presentation recently at IoT Meetup Franke (which we co-initiated): http://www.meetup.com/de-DE/IoT-Meetup-Franken/events/229158470/
Sadly, I was unable to attend=( But as the Hypriot guys are from Bamberg, we're gonna see each other anyway;) Bamberg is like 30km from Erlangen (our homebase).

related: https://github.com/docker-library/pypy/issues

Here: https://github.com/crossbario/crossbar-docker/tree/master/crossbar/armhf


MONDO:0005272 refractory anemia (plus possible revision to all subtypes of MONDO:0018881 myelodysplastic syndrome)

Mondo term (ID and Label):
MONDO:0005272 refractory anemia
Suggested new label:
myelodysplastic syndrome with single lineage dysplasia
Optional: Any additional information (like supporting evidence, PubMed ID, etc.)
The definition for 'refractory anemia' represented in MONDO is based on WHO data 2001 classification (via NCIT/Orphanet) http://purl.obolibrary.org/obo/MONDO_0005272
However, in the current, more recent WHO classification (2016), the term 'refractory anemia' is not used any more, and has been replaced with 'myelodysplastic syndrome with single lineage dysplasia' (MDS with single lineage dysplasia).
'refractory anemia' seems to be encompassed as a subtype of 'myelodysplastic syndrome with single lineage dysplasia' - in this case the single lineage being erythroid, and also representing the most common form of dysplasia within the class.
Another possibly it is that 'refractory anemia' is  actually a phenotype in some of each new subtypes eg: MDS with isolated 5q- syndrome has anemia, and can only present with anemia, but can be considered with refractory anemia?
This revision might affect MONDO:0018881 'myelodysplastic syndrome' subtypes, due to all definitions relating to (WHO, 2001) [ via NCIT] and this group of diseases are all subsets : ordo_group_of_disorders / ordo_disease, so it might need further input from Orphanet for revision?
Supporting evidence:

PMID/publications
https://pubmed.ncbi.nlm.nih.gov/27776290/
https://www.intechopen.com/chapters/64871
https://www.pathologyoutlines.com/topic/bonemarrowneoplasticMDSWHO.html
WHO (2016)
https://www.pathologyoutlines.com/topic/bonemarrowneoplasticMDSWHO.html
AJMC, January 4, (2022)
https://www.ajmc.com/view/identifying-myelodysplastic-syndromes-subtypes

@sabrinatoro I am assigning this to you. I marked it for the October release since it may require some research and may be a bigger ticket. Thanks!

Based on https://www.intechopen.com/chapters/64871, the following should be do/reviewed:

Mondo
Mondo name
renaming based on WHO 2016
additional to-do

MONDO:0005272
refractory anemia'
MDS with single lineage dysplasia (MDS-SLD)
[ ] RE-CLASSIFY as it is not a "multilineage dysplasia"    [ ] review definition as "MDS-SLD includes refractory anemia (unilineage erythroid dysplasia), refractory neutropenia (unilineage dysgranulopoiesis), and refractory thrombocytopenia (unilineage dysmegakaryocytopoiesis)."   [ ] add synonyms: Refractory cytopenia with unilineage dysplasia (RCUD), refractory anemia (RA), refractory neutropenia (RN), and refractory thrombocytopenia (RT)

MONDO:0019453
refractory cytopenia with multilineage dysplasia'
MDS with multilineage dysplasia (MDS-MLD)
[already a synonym]

MONDO:0019157
acquired idiopathic sideroblastic anemia'
MDS with ring sideroblasts (MDS-RS)
[already a synonym]

MONDO:0007925
chromosome 5q deletion syndrome'
Myelodysplastic syndrome associated with isolated del(5q)

MONDO:0019454
myelodysplastic syndrome with excess blasts'
ok

MONDO:0015040
myelodysplastic syndrome with excess blasts-1'
ok

MONDO:0015041
myelodysplastic syndrome with excess blasts-2'
ok

MONDO:0018881
myelodysplastic syndrome'
ok
add synonym: MDS, unclassifiable (MDS-U)

MONDO:0044874
refractory cytopenia of childhood'
ok

I think some of the X-refs on MONDO:0005272 need to be reviewed/moved or removed...
-NCIT:C2872 (MONDO:equivalentTo) is still "Refractory Anemia" but NCIT has this term: Myelodysplastic Syndrome with Single Lineage Dysplasia (Code C82591) and I think this may be a better match for the Mondo record?
-UMLS:C0002893 (Orphanet:98826/e) is "Refractory anemias" https://uts.nlm.nih.gov/uts/umls/concept/C0002893 but UMLS maps the NCIT term to "Refractory cytopenia with unilineage dysplasia" UMLS CUI: C2826318
-SCTID:109996008 (MONDO:equivalentTo) is "Refractory anemia (clinical)" preferred, but with an alt name/finding of "Myelodysplastic syndrome: Refractory anemia, without ringed sideroblasts, without excess blasts (disorder)" and I'm not sure, but maybe it doesn't fit on this Mondo concept? (either case, UMLS maps it to yet another CUI: C2981142, suggesting they think it is a distinct concept from either CUI above) Maybe a better match is "Refractory cytopenia with unilineage dysplasia" SCTID<PHONE_NUMBER> (this is a parent to these other concepts in SNOMED CT :Refractory anemia, Refractory neutropenia, Refractory thrombocytopenia; which suggests this is a closer match conceptually given the new WHO definition and grouping provided on Mondo)


fix-synonym-for-pe

We mistakenly added a "PE" synonym for "Physical education" instead of a match_synonym or suggestion_synonym.

I think this is already fixed by #29 ?


Ensure global Awesomplete on self is defined

Fix for #17084
Ensure global Awesomplete on self is defined before any possible call to init(), so that Awesomplete.count doesn't break.
I did look at adding a Karma/Jasmine test for this, but "it's hard"!
I would have to start changing all the test setup, which might not be a popular choice. I think a part of the problem is that karma.conf.js line 12 ensures that Awesomplete is always loaded early and thus initialised via the DOMContentLoaded event.
That means this code is never actually run in any test:
	if (document.readyState !== "loading") {
		init();
	}

Perhaps somebody with more Karma experience might be able to offer a better way to control the loading?

Merged, thanks!


[Event Request] codeunit 80 "Sales-Post" OnInsertInvoiceHeaderOnBeforeTransferFields / OnInsertInvoiceHeaderOnAfterTransferFields

Could you please add the following two events?
local procedure InsertInvoiceHeader(var SalesHeader: Record "Sales Header"; var SalesInvHeader: Record "Sales Invoice Header")
var
    SalesCommentLine: Record "Sales Comment Line";
    RecordLinkManagement: Codeunit "Record Link Management";
    SegManagement: Codeunit SegManagement;
    IsHandled: Boolean;
begin
    [...]

    with SalesHeader do begin
        SalesInvHeader.Init();
        CalcFields("Work Description");
        OnInsertInvoiceHeaderOnBeforeTransferFields(SalesHeader); //NEW
        SalesInvHeader.TransferFields(SalesHeader);
        OnInsertInvoiceHeaderOnAfterTransferFields(SalesHeader, SalesInvHeader); //NEW

        SalesInvHeader."No." := "Posting No.";
        [...]
end;

[IntegrationEvent(false, false)]
local procedure OnInsertInvoiceHeaderOnBeforeTransferFields(var SalesHeader: Record "Sales Header")
begin
end;

[IntegrationEvent(false, false)]
local procedure OnInsertInvoiceHeaderOnAfterTransferFields(SalesHeader: Record "Sales Header"; var SalesInvoiceHeader: Record "Sales Invoice Header")
begin
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Revise docs and formatting for cards.ex

Coverage remained the same at 77.778% when pulling 012a7f4d7523d8ab700b183c80fcee0c600d1276 on gmile:revise-docs-for-cards into 782e5057fd6eb4d39721ad573288036c43078f1d on robconery:master.

Coverage remained the same at 77.698% when pulling e96667edf8001bbb56b21f15b78d217e4d0376e9 on gmile:revise-docs-for-cards into af29ee425e4ad1e10268e34abd762dd17a95468a on robconery:master.

Despite all tests being green, this PR caused the build to fail due to coveralls timeout error https://travis-ci.org/robconery/stripity-stripe/builds/153210726:

The command "mix coveralls.travis" exited with 1.


Unbranded styles override GDS Transport

Including the unbranded partial in application.scss (introduced in da73ce4) overrides the $toolkit-font-stack for all subsequent rules.
Any styles that are added after the partial include using the typography mixins will use the unbranded font stack instead of GDS Transport.

#270 fixes this.


Configuring PostgreSQL charset

I just enabled the charset configuration to PostgreSQL, like I said in issue #70.
In the second commit, I just configure the postgres password to enable authentication, because I received an PDOException to an empty password.
PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[08006] [7] fe_sendauth: no password supplied' in /vagrant/test/IntegrationTestListener.php:63

gotcha!

@Maks3w Must I use the master branch?

Really nice patch, @wandersonwhcr ! Thanks!

@weierophinney ty :+1:


cannot make a room public

Reported by @Dako300:matrix.org
I cannot make a groupchat I created go pulic, access and visibility is grey and i am admin
https://github.com/matrix-org/riot-android-rageshakes/issues/193

I put this issue P2 because i don't reproduce this issue.
There are two reasons to not be able to make a room public
-> the user is not admin
-> there is no data connection


Review amplitude data items, add webimage_extra_packages

Is there an existing issue for this?

[x] I have searched the existing issues

Is your feature request related to a problem?
I note that we don't find webimage_extra_packages in the amplitude data and it would inform us about packages that we should add to ddev-webserver.
Describe your solution
Review and update the data we send to amplitude, especially this kind of project configuration data that we might have lost along the way.
Also, I get weekly emails saying we have 2 events with "property issues". We only have 2 events, so there's likely something wrong.

Also, I get weekly emails saying we have 2 events with "property issues". We only have 2 events, so there's likely something wrong.

This is apparently an upsell attempt, the link in those emails goes to a page that requires an upsell. Ignoring then.


fix(designer): Stringified Integers are not handled in switch cases and are casted to integers

Fixes https://github.com/Azure/LogicAppsUX/issues/4492
Before:

After

converting to draft as I look to see if there's a better way of handling this, the logic added here is very Switch/Case-specific, which I would like to avoid

closing this issue in favor of https://github.com/Azure/LogicAppsUX/pull/4588


Using with Apollo server?  Gradual migration path?

What's the way to implement this in a real-world app?  Is it ready to use in a real server?

@vonwao This is not meant to be used w/ Apollo Server or GraphQLJS. It's an implementation from scratch. If you happen to use typescript, checkout https://github.com/sikanhe/gqtx if you want a similar experience but use with graphql-js or Apollo Server


Update DG for archive and progress command

Codecov Report

Merging #115 (c55f4a3) into master (42d27c2) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #115   +/-   ##
=========================================
  Coverage     52.34%   52.34%
  Complexity      462      462
=========================================
  Files            98       98
  Lines          1981     1981
  Branches        241      241
=========================================
  Hits           1037     1037
  Misses          861      861
  Partials         83       83

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 42d27c2...c55f4a3. Read the comment docs.