• Francisco Aguirre's avatar
    Different XCM builders, default one requires fee payment (#2253) · b3841b6b
    Francisco Aguirre authored
    Adding on top of the new builder pattern for creating XCM programs, I'm
    adding some more APIs:
    
    ```rust
    let paying_fees: Xcm<()> = Xcm::builder() // Only allow paying for fees
      .withdraw_asset() // First instruction has to load the holding register
      .buy_execution() // Second instruction has to be `buy_execution`
      .build();
    
    let paying_fees_invalid: Xcm<()> = Xcm::builder()
      .withdraw_asset()
      .build(); // Invalid, need to pay for fees
    
    let not_paying_fees: Xcm<()> = Xcm::builder_unpaid()
      .unpaid_execution() // Needed
      .withdraw_asset()
      .deposit_asset()
      .build();
    
    let all_goes: Xcm<()> = Xcm::builder_unsafe() // You can do anything
      .withdraw_asset()
      .deposit_asset()
      .build();
    ```
    
    The invalid bits are because the methods don't even exist on the types
    that you'd want to call them on.
    
    ---------
    
    Co-authored-by: command-bot <>
    b3841b6b